---
title: 概述
---



:::tip
人类智慧从简单工具到计算机时代，从算盘、到电子管计算机，演进到晶体管计算机。这过程中，人们发现由硬件实现不同计算机系统昂贵且低效。因此，软件概念兴起，随时间推移，软件领域不断拓展，计算机能力不断提高。**计算机系统由层层抽象构建而成，硬件是基础，应用是表层，中间是操作系统和各种编程语言**。
:::

## 计算机系统概述

现代的计算机基本是以图灵机为理论基础的，采用了冯·诺依曼体系架构。

![冯诺依曼体系](https://wkq-img.oss-cn-chengdu.aliyuncs.com/site/de4c14fcdaec309bd69941476ada8bbc.jpeg)

- **核心思想**：将程序指令和数据存储在同一存储器内，指令和数据的存储单元相同。程序可以通过按顺序访问存储器来实现。
- **主要组成**：
  - **运算器（Arithmetic Logic Unit, ALU）**：负责执行算术和逻辑运算。
  - **控制单元（Control Unit）**：管理指令的执行过程，包括取指令、译码指令和执行指令。
  - **存储器（Memory）**：用于存储程序指令和数据。
  - **输入设备（Input Devices）**：用于接收外部输入。
  - **输出设备（Output Devices）**：用于向外部输出结果。
- **特点**：
  - **程序存储器与数据存储器分离**：指令和数据存储在不同存储器中，允许灵活的程序控制。
  - **以二进制编码**：指令和数据以二进制形式表示，便于处理和存储。
  - **按需存取**：程序按需从存储器中读取指令，实现灵活的程序控制流。


## Java 虚拟机的本质
JVM 是一种虚拟计算机，它接受字节码，并把它转换为机器可以读取和执行的代码。

![](https://wkq-img.oss-cn-chengdu.aliyuncs.com/site/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-09-26%20172839.png)

Java 虚拟机在计算机硬件和 Java 程序之间建立了一个抽象层，这样 Java 程序就能在 JVM 中运行，而不用关心底层硬件和操作系统的细节。从而实现了一次编写，到处运行的效果。
## 机器与语言

![](https://wkq-img.oss-cn-chengdu.aliyuncs.com/site/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-09-26%20180128.png)

通过前面的介绍，我们发现问题本质始终未变，随着新机器的推出，使用机器的成本急剧降低。不同机器提供不同交互语言，从最初的 0/1 到 JVM 的字节码，再到如今更接近人类语言的 Java 或 Groovy。这无限递归般的过程中，我们封装旧机器，借助其能力，创造新机器，并提供更简洁的语言。云时代下，机器概念淡化，FaaS逐渐成为主流，更深刻理解 JVM 的本质，不仅有助于写出优秀的 Java 代码，也能洞察技术演进趋势。

## JVM 的基本特性
JVM 作为一种计算机抽象设备，具有以下特性：